package gson.gson.cclass;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;

import java.math.BigDecimal;
import java.math.BigInteger;

public class JsonArrayExample {
    private JsonArray jsonArray;

    public JsonArrayExample() {
        this.jsonArray = new JsonArray();
    }

    // 添加单个元素
    public void add(JsonElement element) {
        jsonArray.add(element);
    }

    // 添加整个 JsonArray
    public void addAll(JsonArray array) {
        jsonArray.addAll(array);
    }

    // 判断是否包含某个元素
    public boolean contains(JsonElement element) {
        return jsonArray.contains(element);
    }

    // 比较两个 JsonArray 是否相等
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (!(obj instanceof JsonArrayExample)) {
            return false;
        }
        JsonArrayExample other = (JsonArrayExample) obj;
        return this.jsonArray.equals(other.jsonArray);
    }

    // 获取指定索引的元素
    public JsonElement get(int index) {
        return jsonArray.get(index);
    }

    // 获取内部的 JsonArray
    public JsonArray getJsonArray() {
        return this.jsonArray;
    }

    public BigDecimal getAsBigDecimal(int index) {
        return jsonArray.get(index).getAsBigDecimal();
    }

    public BigInteger getAsBigInteger(int index) {
        return jsonArray.get(index).getAsBigInteger();
    }

    public boolean getAsBoolean(int index) {
        return jsonArray.get(index).getAsBoolean();
    }

    public byte getAsByte(int index) {
        return jsonArray.get(index).getAsByte();
    }

    public char getAsCharacter(int index) {
        return jsonArray.get(index).getAsCharacter();
    }

    public double getAsDouble(int index) {
        return jsonArray.get(index).getAsDouble();
    }

    public float getAsFloat(int index) {
        return jsonArray.get(index).getAsFloat();
    }

    public int getAsInt(int index) {
        return jsonArray.get(index).getAsInt();
    }

    public long getAsLong(int index) {
        return jsonArray.get(index).getAsLong();
    }

    public void set(int index, JsonElement element) {
        if (index >= 0 && index < this.jsonArray.size()) {
            this.jsonArray.set(index, element);
        } else {
            throw new IndexOutOfBoundsException("Index out of bounds: " + index);
        }
    }

    public int size() {
        return this.jsonArray.size();
    }

}
